From: Giovanni Campagna Date: Wed, 18 Jul 2012 11:59:26 +0000 (+0200) Subject: St: add :disabled pseudo class when a button is not reactive X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~1013^2^2~6296 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=a29507e45221633f6515f92b0174531ee290ed11;p=gnome-shell.git St: add :disabled pseudo class when a button is not reactive The :reactive property is used on StButton to like the :sensitive property on GtkWidgets, that is, to indicate that the user is not (yet) expected to click the button, and therefore should affect styling too. This allows to remove some code at the JS layer. https://bugzilla.gnome.org/show_bug.cgi?id=619955 --- diff --git a/js/ui/networkAgent.js b/js/ui/networkAgent.js index c9473a766..1c29b98f3 100644 --- a/js/ui/networkAgent.js +++ b/js/ui/networkAgent.js @@ -166,10 +166,6 @@ const NetworkSecretDialog = new Lang.Class({ this._okButton.button.reactive = valid; this._okButton.button.can_focus = valid; - if (valid) - this._okButton.button.remove_style_pseudo_class('disabled'); - else - this._okButton.button.add_style_pseudo_class('disabled'); }, _onOk: function() { diff --git a/src/st/st-button.c b/src/st/st-button.c index a4edbe75a..e3c46f9fb 100644 --- a/src/st/st-button.c +++ b/src/st/st-button.c @@ -446,6 +446,15 @@ st_button_class_init (StButtonClass *klass) G_TYPE_INT); } +static void +notify_reactive_cb (StWidget *button) +{ + if (clutter_actor_get_reactive (CLUTTER_ACTOR (button))) + st_widget_remove_style_pseudo_class (button, "disabled"); + else + st_widget_add_style_pseudo_class (button, "disabled"); +} + static void st_button_init (StButton *button) { @@ -455,6 +464,9 @@ st_button_init (StButton *button) clutter_actor_set_reactive (CLUTTER_ACTOR (button), TRUE); st_widget_set_track_hover (ST_WIDGET (button), TRUE); + + g_signal_connect(button, "notify::reactive", + G_CALLBACK (notify_reactive_cb), NULL); } /**